package com.hmall.common.config;

import com.hmall.common.interceptors.UserInfoInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * WEB MVC配置类
 * 利用Spring boot自动装配的原理，在META-INF下定义一个spring.factories文件，里面放上你要加载的配置类就可以或者被启动类扫描到（麻烦）。
 * 条件装配，必须是web服务，否则网关服务报错，网关没有spring mvc。
 * 网关是一种非阻塞式的，响应式的编程基于web flakesi，里面根本就没有MVC,所以要用条件装配。
 * 网关与微服务的本质条件就是MVC即核心控制器DispatcherServlet
 */
@ConditionalOnClass(DispatcherServlet.class) //
public class MvcConfig implements WebMvcConfigurer {

    /**
     * 添加拦截器
     * 添加用户信息拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new UserInfoInterceptor());
    }
}
